import { useSearchParams, Link } from 'react-router-dom' import PageHeading from '~/components/PageHeading' import { useHasPermission } from '~/components/DashboardContext' import { trpc } from '~/utils/trpc' import IVSpinner from '~/components/IVSpinner' import { EnvSwitcher } from '../history' import SimpleTable from '~/components/SimpleTable' import useTable, { IVTableRow } from '~/components/IVTable/useTable' import { useMemo } from 'react' import { getName, getStatus } from '~/utils/actions' import classNames from 'classnames' import EmptyState from '~/components/EmptyState' import { hostStatusToString } from '~/utils/text' import { useOrgParams } from '~/utils/organization' import { HostInstanceStatus } from '@prisma/client' import SettingsIcon from '~/icons/compiled/Settings' import IVTooltip from '~/components/IVTooltip' import { actionScheduleToDescriptiveString } from '~/utils/actionSchedule' import IconSchedule from '~/icons/compiled/Schedule' function StatusPill({ status }: { status?: HostInstanceStatus }) { return ( {hostStatusToString(status ?? 'OFFLINE')} ) } export default function ManageActionsPage() { useHasPermission('READ_PROD_ACTIONS', { redirectToDashboardHome: true }) const { orgEnvSlug } = useOrgParams() const [search] = useSearchParams() const canConfigureActions = useHasPermission('WRITE_PROD_ACTIONS') const allActions = trpc.useQuery([ 'action.all', { envSlug: search.get('environment'), }, ]) const data = useMemo(() => { if (!allActions.data) return [] return allActions.data.actions.map((action, idx) => ({ key: String(idx), data: { name: ( {getName(action)} {action.schedules.length > 0 && ( {`Runs ${actionScheduleToDescriptiveString( action.schedules[0] )}`} } > )} ), slug: {action.slug}, status: , actions: ( ), }, })) }, [allActions.data, canConfigureActions, orgEnvSlug]) const table = useTable({ data, columns: ['Name', 'Slug', 'Status', ''], totalRecords: data.length, isDownloadable: false, isFilterable: false, }) return ( {allActions.isLoading ? ( ) : ( } emptyState={ You have not created any actions yet. } /> } /> )} ) }
You have not created any actions yet.